﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.Negocio;
using VentaElectrodomesticos.AbmUsuario;
using VentaElectrodomesticos.Datos;
using VentaElectrodomesticos.Contrato;

namespace VentaElectrodomesticos.GUI.AbmUsuario
{
    public partial class FormAbmUsuario : Base.BaseListado<UsuarioNegocio,FormUsuario,UsuarioDAO,Usuario>
    {
        private static FormAbmUsuario instance;

        public static FormAbmUsuario getInstance()
        {
            if (instance == null)
                instance = new FormAbmUsuario();
            instance.BringToFront();
            return instance;
        }

        public FormAbmUsuario()
        {
            InitializeComponent();
            this.comboProvincia.Items.AddRange((new ProvinciaNegocio()).getAll().ToArray());
            this.comboProvincia.ValueMember = "Id";
            this.comboProvincia.DisplayMember = "Nombre";
            this.comboTipo.Items.AddRange((new TipoPersonaNegocio()).getAll().ToArray());
            this.comboTipo.ValueMember = "Id";
            this.comboTipo.DisplayMember = "Nombre";
            this.comboSucursal.Items.AddRange((new SucursalNegocio()).getAll().ToArray());
            this.comboSucursal.ValueMember = "Id";
            this.comboSucursal.DisplayMember = "Direccion";
        }

        protected override DataGridView DgList
        {
            get
            {
                return this.dgListClientes;
            }
        }

        protected override void OnClosed(EventArgs e)
        {
            instance = null;
            base.OnClosed(e);
        }


        protected override void initTable(DataGridView table)
        {
            table.Columns["contrasenia"].Visible = false;
            table.Columns["empleado_id"].Visible = false;
            table.Columns["__empleado"].Visible = false;
            table.Columns["_provinciaEmpleado_id"].Visible = false;
            table.Columns["_sucursalEmpleado_id"].Visible = false;
            table.Columns["_tipoEmpleado_id"].Visible = false;

            table.Columns["_nombreEmpleado"].HeaderText = "Nombre empleado";
            table.Columns["_apellidoEmpleado"].HeaderText = "Apellido empleado";
            table.Columns["_dniEmpleado"].HeaderText = "Dni empleado";
            table.Columns["_provinciaEmpleado"].HeaderText = "Provincia empleado";
            table.Columns["_sucursalEmpleado"].HeaderText = "Sucursal empleado";
            table.Columns["_tipoEmpleado"].HeaderText = "Tipo empleado";
        }



        protected override Usuario getFilter()
        {
            Usuario usuarioFilter = new Usuario();
            usuarioFilter.usuario = textUsuario.Text;
            usuarioFilter._apellidoEmpleado = textApellido.Text;
            usuarioFilter._nombreEmpleado = textNombre.Text;
            usuarioFilter._dniEmpleado = textDni.Text;
            if (comboSucursal.SelectedItem != null)
            {
                usuarioFilter._sucursalEmpleado_id = ((Sucursal)comboSucursal.SelectedItem).Id;
            }
            if (comboTipo.SelectedItem != null)
            {
                usuarioFilter._tipoEmpleado_id = ((TipoPersona)comboTipo.SelectedItem).Id;
            }
            if (comboProvincia.SelectedItem != null)
            {
                usuarioFilter._provinciaEmpleado_id = ((Provincia)comboProvincia.SelectedItem).Id;
            }
            return usuarioFilter;
        }

        protected override void limpiar()
        {
            this.textApellido.Text = "";
            this.textDni.Text = "";
            this.textNombre.Text = "";
            this.textUsuario.Text = "";
            this.comboProvincia.SelectedIndex = -1;
            this.comboSucursal.SelectedIndex = -1;
            this.comboTipo.SelectedIndex = -1;

            base.limpiar();
        }

        private void tbFilterNombre_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
                base.filter();
        }

        protected override void initForm(FormUsuario form)
        {
            RolNegocio rolNegocio = new RolNegocio();
            form.setAvailableRoles(rolNegocio.getAllActives());
        }

        protected override void cumpleValidaciones()
        {
            if (!(RegCondition.Condition(textApellido, RegCondition.RegularExpressions.Alphabet) || textApellido.Text == ""))
                this.Errores.Add("El apellido del empleado no es válido");
            if (!(RegCondition.Condition(textNombre, RegCondition.RegularExpressions.Alphabet) || textNombre.Text == ""))
                this.Errores.Add("El nombre del empleado no es válido");
            if (!(RegCondition.Condition(textUsuario, RegCondition.RegularExpressions.Alphabet) || textUsuario.Text == ""))
                this.Errores.Add("El usuario no es válido");
            if (!(RegCondition.Condition(textDni, RegCondition.RegularExpressions.Numeric) || textDni.Text == ""))
                this.Errores.Add("El DNI del empleado no es válido");
        }
    }
}
